# 定义编译器  
CC=gcc  
# 定义编译选项  
CFLAGS=-I. -Isrc 
# 定义链接选项  
LDFLAGS=-lm
# 定义源文件目录  
SRCDIRS=. src  
# 获取所有.c文件  
SRCS=$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c))  
# 将.c文件替换为.o对象文件  
OBJS=$(SRCS:.c=.o)
# 定义目标程序名  
TARGET=demo  

# 默认目标  
all: $(TARGET)  
# 链接目标程序  
$(TARGET): $(OBJS)  
	$(CC) -o $@ $^ $(LDFLAGS)
# 编译每个.c文件为.o文件  
%.o: %.c  
	$(CC) $(CFLAGS) -c -o $@ $<  
# 清理编译生成的文件  
clean:  
	rm -f $(OBJS) $(TARGET)  
# 伪目标，用于显示帮助信息  
.PHONY: help  
help:  
	@echo "Usage:"  
	@echo "  make          - compile and link all .c files into demo"  
	@echo "  make clean    - remove all generated files"  
	@echo "  make help     - show this help message"